

#if 1

#include "WolvGen.h"

#include "../ProductionDef/CProduction_Statement.h"
#include "../ProductionDef/CProduction_Expression.h"
#include "../ProductionDef/CProduction_Unit.h"
#include "../ProductionDef/CProduction_Scope.h"


PRODUCTION("<S>-><statement_list>",CProductionIMPL_trivial);
PRODUCTION("<S>-><empty>",CProductionIMPL_trivial);

PRODUCTION("<statement_list>-><statement_list><statement_complete>",CProduction_Statement_List_Append);
PRODUCTION("<statement_list>-><statement_complete>",CProduction_Statement_List);

PRODUCTION("<statement_complete>-><statement>[;]", CProduction_Statement_Complete);
PRODUCTION("<statement_complete>-><statement_block>", CProduction_Statement_Complete);

PRODUCTION("<statement_block>->[{]<statement_list>[}]",CProduction_Statement_Block);


PRODUCTION("<statement>->[print]<expression>",CProduction_Statement_Print);
PRODUCTION("<statement>-><expression>",CProduction_Statement_Copy);
PRODUCTION("<statement>-><empty>",CProduction_Statement_Empty);

PRODUCTION("<expression>-><expression_1>",CProduction_Expression_Copy);
PRODUCTION("<expression>-><variable>[=]<expression>",CProduction_Expression_Assign);

PRODUCTION("<expression_1>-><expression_1>[==]<expression_2>",CProduction_Expression_Equal);
PRODUCTION("<expression_1>-><expression_1>[!=]<expression_2>",CProduction_Expression_NotEqual);
PRODUCTION("<expression_1>-><expression_2>",CProduction_Expression_Copy);

PRODUCTION("<expression_2>-><expression_2>[+]<expression_3>",CProduction_Expression_Plus);
PRODUCTION("<expression_2>-><expression_2>[-]<expression_3>",CProduction_Expression_Minus);
PRODUCTION("<expression_2>-><expression_3>",CProduction_Expression_Copy);


PRODUCTION("<expression_3>-><expression_3>[*]<expression_4>",CProduction_Expression_Mult);
PRODUCTION("<expression_3>-><expression_3>[/]<expression_4>",CProduction_Expression_Divide);
PRODUCTION("<expression_3>-><expression_3>[%]<expression_4>",CProduction_Expression_Mod);
PRODUCTION("<expression_3>-><expression_4>",CProduction_Expression_Copy);

PRODUCTION("<expression_4>-><unit>",CProduction_Expression_Copy);
PRODUCTION("<expression_4>->[-]<unit>",CProduction_Expression_Nagetive);

PRODUCTION("<unit>-><number>",CProduction_Unit_Number);
PRODUCTION("<unit>-><string>",CProduction_Unit_String);
PRODUCTION("<unit>-><variable>",CProduction_Expression_Copy);
PRODUCTION("<unit>->[(]<expression>[)]",CProduction_Expression_ParentThese);

PRODUCTION("<variable>-><word>",CProduction_Unit_Variable);



#endif